<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>
<script>
    //1. 依次输出什么?
    //2. 整个过程中产生了几个执行上下文?
    //    答：5个执行上下文。
    // console.log('global begin: '+ i)
    // var i = 1
    // foo(1);
    // function foo(i) {
    //     if (i == 3) {
    //         return;
    //     }
    //     console.log('foo() begin:' + i);
    //     foo(i + 1);// foo(1+1)
    //     console.log('foo() end:' + i);
    // }
    // console.log('global end: ' + i);

    // 输出结果：
    // global begin: undefined
    // foo() begin:1
    // foo() begin:2
    // foo() end:2

    // foo() end:1
    // global end:1

    // 会产生几个上下文
    // [
    // foo(2)
    // foo(1)
    // globalContext
    // ]






    console.log('global begin: '+ i)
    var i = 1
    foo(1);
    function foo(i) {
        if (i == 4) {
            return;
        }
        console.log('foo() begin:' + i);

        function foo2(i){
            if (i == 4) {
                return;
            }
            console.log('foo() begin:' + i);
            function foo3(i){
                if (i == 4) {
                    return;
                }
                console.log('foo() begin:' + i);
                function foo4(i){
                    if (i == 4) {
                        return;
                    }
                    console.log('foo() begin:' + i);
                    // foo4(i + 1);// foo(1+1)
                    console.log('foo() end:' + i);
                }
                foo4(i + 1);// foo(1+1)
                console.log('foo() end:' + i);
            }
            foo3(i + 1);// foo(1+1)
            console.log('foo() end:' + i);
        }



        foo2(i + 1);// foo(1+1)
        console.log('foo() end:' + i);
    }
    console.log('global end: ' + i);

</script>
</html>